package cn.b.sky.mes.qm.dao;

import java.util.List;

import cn.b.sky.mes.qm.model.Defect;
import cn.b.sky.mes.qm.model.DefectAttributeValue;
import cn.b.sky.mes.qm.model.condition.DefectCondition;
import org.apache.ibatis.annotations.Param;

public interface DefectDao {

  /**
   * <strong>Title : selectDefectListByCondition<br></strong>
   * <strong>Description : </strong>条件查询缺陷列表<br> 
   * <strong>Create on : 2015年12月15日 上午10:09:39<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Defect>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Defect> selectDefectListByCondition(DefectCondition condition);

  /**
   * 
   * <strong>Title : selectDefectListSuggestByCondition<br></strong>
   * <strong>Description : </strong>查找建议<br> 
   * <strong>Create on : 2015-12-17 下午4:02:35<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Defect>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Defect> selectDefectListSuggestByCondition(DefectCondition condition);

  /**
   * <strong>Title : selectDefectCountByCondition<br></strong>
   * <strong>Description : </strong>条件查询缺陷总数<br> 
   * <strong>Create on : 2015年12月15日 上午10:09:55<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectDefectCountByCondition(DefectCondition condition);

  /**
   * <strong>Title : getDefect<br></strong>
   * <strong>Description : </strong>获得缺陷实体<br> 
   * <strong>Create on : 2015年12月15日 上午10:26:00<br></strong>
   * <p>
   * @param defectCode
   * @param siteCode
   * @return
   * Defect
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Defect getDefect(@Param("defectCode") String defectCode, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : insertDefect<br></strong>
   * <strong>Description : </strong>插入缺陷实体<br> 
   * <strong>Create on : 2015年12月15日 上午10:26:06<br></strong>
   * <p>
   * @param defect
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertDefect(Defect defect);

  /**
   * <strong>Title : insertDefectAttributeValue<br></strong>
   * <strong>Description : </strong>插入缺陷属性值记录<br> 
   * <strong>Create on : 2015年12月15日 上午10:26:10<br></strong>
   * <p>
   * @param value
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertDefectAttributeValue(DefectAttributeValue value);

  /**
   * <strong>Title : updateDefect<br></strong>
   * <strong>Description : </strong>更新缺陷<br> 
   * <strong>Create on : 2015年12月15日 上午10:26:14<br></strong>
   * <p>
   * @param defect
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateDefect(Defect defect);

  /**
   * <strong>Title : deleteDefect<br></strong>
   * <strong>Description : </strong>删除缺陷<br> 
   * <strong>Create on : 2015年12月15日 上午10:26:19<br></strong>
   * <p>
   * @param siteCode
   * @param defectCode
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteDefect(@Param("siteCode") String siteCode, @Param("defectCode") String defectCode);

  /**
   * <strong>Title : deleteDefectAttributeValue<br></strong>
   * <strong>Description : </strong>删除缺陷属性值记录<br> 
   * <strong>Create on : 2015年12月15日 上午10:28:27<br></strong>
   * <p>
   * @param siteCode
   * @param defectCode
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteDefectAttributeValue(@Param("siteCode") String siteCode, @Param("defectCode") String defectCode);

  /**
   * <strong>Title : updateDefectAttributeValue<br></strong>
   * <strong>Description : </strong>更新缺陷属性值<br> 
   * <strong>Create on : 2015年12月15日 上午10:29:37<br></strong>
   * <p>
   * @param defect
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateDefectAttributeValue(Defect defect);

  /**
   * <strong>Title : getDefectAttributeValueList<br></strong>
   * <strong>Description : </strong><br> 
   * <strong>Create on : 2015年12月15日 上午11:02:44<br></strong>
   * <p>
   * @param defectCode
   * @param siteCode
   * @return
   * List<DefectAttributeValue>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<DefectAttributeValue> getDefectAttributeValueList(@Param("defectCode") String defectCode,
      @Param("siteCode") String siteCode);

}
